﻿#region

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataInfo;
using KenLib.BusinessManager;
using KenLib.BusinessObject;

#endregion

public partial class Org_frmO_AppCompBranchInput : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ((Org_MasterPage) Master).changeTitle("実習実施場所新規追加登録");
        ((Org_MasterPage) Master).HideLiArea("frmO_AppCompBranchInput");
        grv_human.PageSize = AppCode_Common.getPageSize();

        if (Session["役"] != null)
        {
            if (!IsPostBack)
            {
                if (Session["本社情報1"] == null)
                {
                    Response.Redirect("~/Org/frmO_AppCompBasicInput.aspx");
                }
                List<拠点情報> lst_拠点情報;
                if (Session["拠点情報"] == null)
                {
                    lst_拠点情報 = new List<拠点情報>();
                }
                else
                {
                    lst_拠点情報 = (List<拠点情報>) Session["拠点情報"];
                }

                if (lst_拠点情報.Count > 0)
                {
                    btn登録完了.Enabled = true;
                }
                else
                {
                    btn登録完了.Enabled = false;
                }
                txt_拠点コード.Focus();
                vld_txt_拠点コード.ErrorMessage = getError("ER00002");
                vld_txt_拠点コード_exist.ErrorMessage = getError("ER00009");
                vld_実習実施場所名.ErrorMessage = getError("ER00001");
                rqf_拠点コード.ErrorMessage = getError("ER00001");


                AppCode_Common.ShowEmtyGrid<拠点情報>(grv_human, 0, "データーがありません。", "");
                //string id = ((本社情報)Session["本社情報1"]).企業コード;
                //txtid.Text = id;
                hdf企業ID.Value = ((本社情報) Session["本社情報1"]).企業ID.ToString();
                if (Session["拠点情報"] != null)
                {
                    setvalueToHdf((List<拠点情報>) Session["拠点情報"]);
                    grv_human.DataSource = Session["拠点情報"];
                    grv_human.DataBind();
                }
            }
        }
        else
        {
            Response.Redirect("~/frmD_Login.aspx");
        }
    }

    /// <summary>
    /// Setvalues to HDF.
    /// </summary>
    /// <param name="lst拠点情報">The LST拠点情報.</param>
    private void setvalueToHdf(List<拠点情報> lst拠点情報)
    {
        hd_コード.Value = "";
        for (int i = 0; i < lst拠点情報.Count; i ++)
        {
            if (i < lst拠点情報.Count - 1)
            {
                hd_コード.Value += lst拠点情報[i].拠点コード + ",";
            }
            else
            {
                hd_コード.Value += lst拠点情報[i].拠点コード;
            }
        }
        hdf_Index.Value = "-1";
    }

    protected void btn登録完了_Click(object sender, EventArgs e)
    {
        List<拠点情報> lst_拠点情報;
        if (Session["拠点情報"] == null)
        {
            lst_拠点情報 = new List<拠点情報>();
        }
        else
        {
            lst_拠点情報 = (List<拠点情報>) Session["拠点情報"];
        }
        if (lst_拠点情報.Count > 0)
        {
            本社情報 obj本社情報 = new 本社情報();
            obj本社情報 = (本社情報) Session["本社情報1"];
            frmO_AppCompBasicInputManager AppCompBasicInputManager1 = new frmO_AppCompBasicInputManager();
            if (!AppCompBasicInputManager1.checkExist企業名(obj本社情報.企業名, Convert.ToInt32(Session["企業属性情報"].ToString())))
            {
                Session["本社情報"] = Session["本社情報1"];
                Response.Redirect("frmO_AppCompBasicInput.aspx");
            }
            frmO_AppCompBasicCheckManager AppCompBasicCheckManager = new frmO_AppCompBasicCheckManager();
            frmO_AppCompBasicInputManager AppCompBasicInputManager = new frmO_AppCompBasicInputManager();

            obj本社情報.企業分類コード = 1;
            obj本社情報.廃止区分 = 0;
            String 企業コード = loadID();
            obj本社情報.企業コード = 企業コード;
            foreach (拠点情報 obj拠点情報 in lst_拠点情報)
            {
                if (obj拠点情報.拠点コード == "")
                {
                    obj拠点情報.拠点コード = 企業コード;
                }
                else
                {
                    obj拠点情報.拠点コード = 企業コード + "-" + obj拠点情報.拠点コード;
                }
            }
            if (Session["ユーザログイン"] != null)
            {
                ユーザログイン objユーザログイン = (ユーザログイン) Session["ユーザログイン"];
                objユーザログイン.企業コード = 企業コード;
            }

            AppCompBasicCheckManager.Insert本社情報(obj本社情報);

            String 企業属性情報 = (String) Session["企業属性情報"];

            String 企業ID = AppCompBasicInputManager.check本社情報(obj本社情報.企業コード).Rows[0]["企業ID"].ToString();

            AppCompBasicCheckManager.Insert企業属性情報(企業属性情報, 企業ID);

            foreach (拠点情報 obj拠点情報 in lst_拠点情報)
            {
                obj拠点情報.企業ID = Convert.ToInt32(企業ID);
                frmO_AppCompBranchInputManager AppCompBranchInputManager = new frmO_AppCompBranchInputManager();
                AppCompBranchInputManager.Insert拠点情報(obj拠点情報);
            }

            Response.Redirect("frmO_AppCompBasicFinish.aspx");
        }
        else
        {
        }
    }

    /// <summary>
    /// Loads the ID.
    /// </summary>
    /// <returns></returns>
    private string loadID()
    {
        frmO_AppCompBasicInputManager AppCompBasicInputManager = new frmO_AppCompBasicInputManager();
        string ID = AppCompBasicInputManager.getMax企業コード().Rows[0][0].ToString();
        ID = "0000" + ID;
        ID = ID.Remove(0, ID.Length - 4);
        return ID;
    }


    protected void btnキャンセル_Click(object sender, EventArgs e)
    {
        Session.Remove("本社情報");
        Session.Remove("本社情報1");
        Session.Remove("拠点情報");
        Session.Remove("ユーザログイン");
        Response.Redirect("..\\frm_MOrgManager.aspx");
    }

    /// <summary>
    /// Checks the bytes.
    /// </summary>
    /// <param name="input">The input.</param>
    /// <returns></returns>
    private bool CheckBytes(string input)
    {
        for (int i = 0; i < input.Length; i++)
        {
            if ((int) AppCode_Common.CountBytes(input[i].ToString()) > 1)
            {
                return false;
            }
        }
        return true;
    }

    protected void btn次登録_Click(object sender, EventArgs e)
    {
        Title = "実習実施場所新規追加登録";


        List<拠点情報> lst_拠点情報;
        if (Session["拠点情報"] == null)
        {
            lst_拠点情報 = new List<拠点情報>();
        }
        else
        {
            lst_拠点情報 = (List<拠点情報>) Session["拠点情報"];
        }
        if (CheckBytes(txt_拠点コード.Text))
        {
            string id = "";

            id = txt_拠点コード.Text;

            if (btn次登録.Text == "次登録")
            {
                if (checkExist())
                {
                    拠点情報 l_拠点情報 = new 拠点情報();
                    l_拠点情報.拠点コード = id;
                    l_拠点情報.拠点名 = txt_実習実施場所名.Text;
                    l_拠点情報.企業ID = Convert.ToInt32(hdf企業ID.Value);
                    lst_拠点情報.Insert(0, l_拠点情報);
                }
            }
            else
            {
                拠点情報 obj拠点情報 = lst_拠点情報[Convert.ToInt32(hdf_Index.Value)];
                obj拠点情報.拠点コード = id;
                obj拠点情報.拠点名 = txt_実習実施場所名.Text;
                obj拠点情報.企業ID = Convert.ToInt32(hdf企業ID.Value);
                lst_拠点情報.RemoveAt(Convert.ToInt32(hdf_Index.Value));
                lst_拠点情報.Insert(0, obj拠点情報);
                obj拠点情報.拠点ID = 1;
                btn次登録.Text = "次登録";
            }
        }

        else
        {
            //ScriptManager.RegisterStartupScript(up, this.GetType(), "error", "<script>alert('" + getError("ER00005") + "')</script>", false);
            //ScriptManager.RegisterStartupScript(up, this.GetType(), "error", "<script>$('#" + txt_拠点コード.ClientID + "').focus</script>", false);
        }


        hd_コード.Value = "";
        setvalueToHdf(lst_拠点情報);
        Session["拠点情報"] = lst_拠点情報;
        grv_human.PageIndex = 0;

        if (lst_拠点情報.Count > 0)
        {
            btn登録完了.Enabled = true;
        }
        else
        {
            btn登録完了.Enabled = false;
        }


        txt_拠点コード.Text = "";
        txt_拠点コード.Focus();
        txt_実習実施場所名.Text = "";

        bindDataToGrv();
        regisEvent();
    }

    /// <summary>
    /// Gets the error.
    /// </summary>
    /// <param name="errorid">The errorid.</param>
    /// <returns></returns>
    protected string getError(string errorid)
    {
        ErrorManager errorManager = new ErrorManager();
        Error error = new Error();
        error.ErrorID = errorid;
        return errorManager.getError(error).Rows[0]["ERROR_CONTENT_JP"].ToString();
    }

    protected void btnリセット_Click(object sender, EventArgs e)
    {
        Response.Redirect("frmO_AppCompBranchInput.aspx");
    }


    protected void vld_txt_拠点コード_exist_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = checkExist();
    }

    /// <summary>
    /// Checks the exist.
    /// </summary>
    /// <returns></returns>
    private bool checkExist()
    {
        List<拠点情報> lst_拠点情報;
        if (Session["拠点情報"] == null)
        {
            lst_拠点情報 = new List<拠点情報>();
        }
        else
        {
            lst_拠点情報 = (List<拠点情報>) Session["拠点情報"];
        }
        if (btn次登録.Text == "登録")
        {
            int i = 0;
            foreach (拠点情報 拠点情報1 in lst_拠点情報)
            {
                if ((txt_拠点コード.Text) == 拠点情報1.拠点コード)
                {
                    if (i != Convert.ToInt32(hdf_Index.Value))
                    {
                        txt_拠点コード.Focus();
                        return false;
                    }
                }
                i++;
            }
        }
        else
        {
            foreach (拠点情報 拠点情報1 in lst_拠点情報)
            {
                if ((txt_拠点コード.Text) == 拠点情報1.拠点コード)
                {
                    txt_拠点コード.Focus();
                    return false;
                }
            }
        }
        return true;
    }

    /// <summary>
    /// Binds the data to GRV.
    /// </summary>
    private void bindDataToGrv()
    {
        List<拠点情報> lst_拠点情報;
        if (Session["拠点情報"] == null)
        {
            lst_拠点情報 = new List<拠点情報>();
        }
        else
        {
            lst_拠点情報 = (List<拠点情報>) Session["拠点情報"];
        }

        grv_human.DataSource = lst_拠点情報;

        if (lst_拠点情報.Count > 0)
        {
            grv_human.DataBind();
        }
    }

    protected void grv_human_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowIndex != -1)
        {
            e.Row.Attributes.Add("ondblclick",
                                 "javascript:__doPostBack('ctl00$ContentPlaceHolder1$grv_human','DoubleClick$" +
                                 e.Row.RowIndex + "')");
            拠点情報 obj拠点情報 = (拠点情報) e.Row.DataItem;
            //if (obj拠点情報.拠点ID == 1)
            //{
            //    e.Row.CssClass = "update";
            //}
        }
    }

    protected void grv_human_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Title = "実習実施場所新規追加登録";
        if (e.CommandName == "DoubleClick")
        {
            List<拠点情報> lst_拠点情報;
            lst_拠点情報 = (List<拠点情報>) Session["拠点情報"];
            int index = grv_human.Rows[Convert.ToInt32(e.CommandArgument)].DataItemIndex;
            txt_拠点コード.Text = lst_拠点情報[index].拠点コード;
            txt_実習実施場所名.Text = lst_拠点情報[index].拠点名;
            hdf_Index.Value = index.ToString();
            btn次登録.Text = "登録";
            txt_拠点コード.Focus();
            regisEvent();
        }
    }

    /// <summary>
    /// Regises the event.
    /// </summary>
    private void regisEvent()
    {
        string script = "" +
                        "registerEnterEvent('enter', '" + btn次登録.ClientID + "', 2);" +
                        "registerControlToValidation(\"validation\");";
        ScriptManager.RegisterStartupScript(up, up.GetType(), "error", script, true);
    }

    /// <summary>
    /// Cuts the string.
    /// </summary>
    /// <param name="input">The input.</param>
    /// <param name="length">The length.</param>
    /// <returns></returns>
    protected string cutString(String input, int length)
    {
        if (input != null)
        {
            if (CheckBytes(input))
            {
                return input.Substring(0, input.Length < length ? input.Length : length) +
                       (input.Length > length ? "..." : "");
            }
            else
            {
                length = length/2;
                return input.Substring(0, input.Length < length ? input.Length : length) +
                       (input.Length > length ? "。。。" : "");
            }
        }
        return null;
    }


    protected void grv_human_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        Title = "実習実施場所新規追加登録";
        grv_human.PageIndex = e.NewPageIndex;
        bindDataToGrv();
        regisEvent();
    }
}